const num = [1, 2, [3, 4],
	[5, [6]]
]

// const newArr1 = num.flat(1)
// console.log(newArr1);
// const newArr2 = num.flat(2)
// console.log(newArr2);
// const newArr3 = num.flat(3)
// console.log(newArr3);

// Array.prototype.my_flat = function*(a) {
// 	var length = a.length;
// 	for (var i = 0; i < length; i++) {
// 		var item = a[i];
// 		if (typeof item !== 'number') {
// 			yield* my_flat(item);
// 		} else {
// 			yield item;
// 		}
// 	}
// };
// for (var f of my_flat(arr)) {
// 	console.log(f);
// }
Array.prototype.my_flat = function() {
	let newArr = this
	let i = 0
	while (newArr.some(item => Array.isArray(item))) {
		newArr = [].concat(...newArr)
		i++

	}
	return newArr
}
const newArr = num.my_flat(1)
console.log(newArr);
